package com.joinlabs.service;

import java.math.BigDecimal;
import java.util.List;

import com.joinlabs.entity.CarProduct;
import com.joinlabs.entity.Shopcar;
import com.joinlabs.entity.ShopcarItem;
import com.joinlabs.entity.User;

public interface IShopcarService {
	
	/**
	 * 	通过购物车编号删除购物车子项
	 * @param carId 购物车编号
	 * @return 删除条数
	 */
	int delShopcarItemByCarId(BigDecimal carId);
	
	/**
	 *  生成购物车子项
	 * @param shopcarItemPro 购物车子项
	 * @return 生成条数
	 */
	int createShopcar(ShopcarItem shopcarItem);
	
	/**
     *	通过用户查询购物车中的商品
     * @param userId 用户Id
     * @return 购物车
     */
	Shopcar findShopcarItemsByUserId(String userId);
	
	/**
	 *  增加购物车子项商品数量
	 * @param carId 购物车编号
	 */
	void plusCountByCarId(BigDecimal carId);
	
	/**
     * 	减少购物车子项商品数量	
     * @param carId 购物车编号
     */
    void minusCountByCarId(BigDecimal carId);
    
    /**
     * 	通过购物车子项id集合 查询购物车子项集合(订单操作)
     * @param carIds 购物车编号数组
     * @param userId 用户Id
     * @return 购物车子项集合
     */
    List<ShopcarItem> findShopcarItemsByIds(BigDecimal[] carIds);
    
    /**
     * 	通过购物车子项id 删除下完单的购物车子项(订单操作)
     * @param carIds 购物车编号数组
     * @param userId 用户Id
     */
    void delShopcarItemsByIds(BigDecimal[] carIds);
    
    /**
     * 	通过购物车id 进行库存减少(下单操作)
     * @param shopcarItemPros 购物车子项集合
     */
    void delWaresCountById(List<ShopcarItem> list);
    
    /**
     * 	推荐商品
     * @return 推荐商品集合
     */
    List<CarProduct> findRecommendWares();
	
}
